package com.sino.second.business;

import java.io.File;
import java.util.List;

import com.sino.model.ExpertModel;
import com.sino.second.bean.TblSystemparam;
import com.sino.second.model.ExpertsReviewModel;
import com.sino.second.model.ExpertsReviewModel2;
import com.sino.second.model.XmReviewResults;
import com.sino.second.model.XmReviewResults2;
import com.sino.second.model.XmReviewResults3;
import com.sino.util.page.PagerModel;

public interface IReviewService {

	/**
	 * 评审VO转换PO
	 * 
	 * @param epm
	 * @return
	 */
	public Object voToPo(ExpertsReviewModel epm);

	/**
	 * 评审PO转换VO
	 * 
	 * @param oepm
	 * @return
	 */
	public ExpertsReviewModel poToVo(Object oepm);

	/**
	 * 通过项目ID 专家ID确定一个项目一个专家打分情况
	 * 
	 * @param zlid
	 * @param zjid
	 * @return
	 */
	public List<ExpertsReviewModel> findReviewsList(String zlid, Integer zjid);

	/**
	 * 保存项目评审信息
	 * 
	 * @param o
	 */
	public void saveOrUpdateReviews(Object o);

/**
 * 专家评审信息
 * @param firstRow
 * @param maxRow
 * @param xkId
 * @param hqlWhere
 * @return
 */
	public List findReviewXmList(int firstRow,int maxRow,String xkId,String hqlWhere);
	
	/**
	 * 专家列表记录数
	 * @param xk   学科
	 * @param xkId 专利ID
	 * @return
	 */
	public int findReviewXmCount(String xkId,String hqlWhere);

	/**
	 * 通过专利ID取出评审表1 表2 的专利信息
	 * 
	 * @param zlid
	 * @param hqlWhere
	 * @return
	 */
	public List<ExpertsReviewModel> findReviewXmListByZlId(String zlid,
			String hqlWhere);
	/**
	 *通过专家ID取出专家所评项目
	 * @param zjid
	 * @return
	 */
	public List findReviewXmListByZjId(Integer zjid,String hqlWhere);

	/**
	 * 保存评分结果表
	 * 
	 * @param o
	 */

	public void saveReviewsResults(Object o);

	/*
	 * 通过专利ID取结果表 @param zjid @return
	 */

	public Object findReviewResultsByZlid(String zjid);

	/**
	 * 获得记录数
	 * 
	 * @param hqlWhere
	 * @return
	 */

	public int findReviewCount(String hqlWhere);

	/**
	 * xyw项目结果集
	 * 
	 * @param hqlWhere
	 * @return
	 */
	public List<XmReviewResults> findReviewResultsList(String hqlWhere);
	
	/**
	 * 取得项目评审分数列表
	 * @param firstRow
	 * @param maxRow
	 * @param hqlWhere
	 * @return
	 */
	public List<ExpertsReviewModel2> findReviewXmFsList(String hqlWhere);
    /**
     * 保存或者更新复审结果表中的记录
     * @param xmReviewResults2
     * @param jydjId
     */
	public boolean saveOrUpdateTblXmjg2(XmReviewResults2 xmReviewResults2,String jydjId);
	
	/**
	 * 根据项目id查找已经评审的专家
	 * @param basicInfoId
	 * @return
	 */
	public List<ExpertModel> listReviewExpertByBasicInfoId(String basicInfoId,String xkId,String hqlWhere);
	/**
	 * 根据项目id查找复审结果表中的项目信息
	 * @param xmId
	 * @return
	 */
	public XmReviewResults2 findXmReviewResults2ByXmId(String xmId);
	
	
	public int findCountReviewXmFsList(String hqlWhere);

	public List findZhuanjiaByZlid(String zlid);
	/**
	 * 列出复审结果表中的数据
	 * @return
	 */
	public PagerModel listReview2Result(String hqlWhere);
	
	public int findReviewXkId(String hql);
	
	public Object findXmByZlid(String zlid);
	/**
	 * 通过项目id查找项目的评分信息
	 * @param zlid
	 * @param hqlWhere
	 * @return
	 */
	public List<ExpertsReviewModel2> findReviewXmFsListByZlId(String zlid,
			String hqlWhere);
	public Integer findZjpsfpCountByXmpsmcId(String xmpsmcId, String zhuanyeId,
			String hqlWhere);
	
	public void saveOrUpdateReviews1(Object o);
	
	/**
	 * xyw 根据xkid找基本信息表 项目的个数
	 */
	public Integer findXmCountByXkId(String xkId);
	/**
	 * xyw 根据xkid找分数表1 项目的个数
	 */
	public Integer findFsCountByXkId(String xkId);
	
	
	public void saveOrUpdateTime(TblSystemparam t,TblSystemparam t2);
	/**
	 * 导出最终结果表数据
	 * @param fileName
	 * @param xmReviewResults3List
	 * @return
	 */
	public File exportSecondReviewFs(String fileName,List<ExpertsReviewModel2> erm2List);
	
}
